package com.ethannhu.todaynews.util

import android.content.Context
import android.content.SharedPreferences
import android.preference.PreferenceManager

/**
 * 偏好设置工具类
 * 是否登录了，是否显示引导界面，用户 id
 */
class DefaultPreferenceUtil(context: Context) {
    private val sp: SharedPreferences
    private var context: Context = context.applicationContext  //使用全局的context.applicationContext避免内存泄露

    init {
        sp = this.context.getSharedPreferences(context.packageName + "_preference", Context.MODE_PRIVATE)
    }

    //因为需要构造函数 所以只能手写单例 不能用 object ；object类不能有构造函数
    companion object {
        /**
         * 偏好设置文件名
         */
        private const val NAME = "ethannhu_todaynews"
        private const val TERMS_SERVICE = "TERMS_SERVICE"
        private const val TERMS_GUIDE = "TERMS_GUIDE"

        private var instance: DefaultPreferenceUtil? = null

        /**
         * 获取偏好设置单例
         */
        @Synchronized
        fun getInstance(context: Context): DefaultPreferenceUtil {
            if (instance == null) {
                instance = DefaultPreferenceUtil(context) //TODO 有没有内存泄露？
            }
            return instance!!
        }

    }


    /**
     * 设置同意了用户协议
     */
    fun setAcceptTermsServiceAgreement() {
        sp.edit().putBoolean(TERMS_SERVICE, true).apply()
    }

    /**
     * 获取是否同意了用户协议
     */
    fun isAcceptTermsServiceAgreement(): Boolean = sp.getBoolean(TERMS_SERVICE, false)

    /**
     * 设置展示过了引导界面
     */
    fun setShowGuide() {
        sp.edit().putBoolean(TERMS_GUIDE, true).apply()
    }

    /**
     * 获取是否展示过了引导界面
     */
    fun isSetShowGuide(): Boolean = sp.getBoolean(TERMS_GUIDE, false)
}